import argparse
import os
from tts_handler import TTSHanlder
from config import SILICONFLOW_API_KEY, DEFAULT_MODEL, DEFAULT_VOICE, DEFAULT_RESPONSE_FORMAT


def main():
    parser = argparse.ArgumentParser(description="文本文件朗读工具")
    parser.add_argument("file", help="要朗读的文本文件路径")
    parser.add_argument("--model", default=DEFAULT_MODEL, help="语音模型")
    parser.add_argument("--voice", default=DEFAULT_VOICE, help="语音")
    parser.add_argument("--format", default=DEFAULT_RESPONSE_FORMAT, help="音频格式 (mp3, wav, pcm, opus)")
    parser.add_argument("--segment-size", type=int, default=1000, help="每个段落的最大字符数 (默认: 1000)")
    
    args = parser.parse_args()
    
    # 检查API密钥
    if SILICONFLOW_API_KEY == "your_api_key_here":
        print("请先设置硅基流动API密钥环境变量: SILICONFLOW_API_KEY")
        return
    
    # 检查文件是否存在
    if not os.path.exists(args.file):
        print(f"文件不存在: {args.file}")
        return
    
    # 创建TTS处理器
    tts = TTSHanlder()
    # 设置段落大小
    tts.max_chars_per_segment = args.segment_size
    
    # 读取文件内容
    text = tts.read_text_file(args.file)
    if text is None:
        print("无法读取文件内容")
        return
    
    # 如果文件内容为空
    if not text.strip():
        print("文件内容为空")
        return
    
    # 检查文件大小并选择处理方式
    if len(text) > args.segment_size:
        print(f"检测到大文件 ({len(text)} 字符)，将使用流式处理...")
    else:
        print("正在转换文本为语音...")
        
    # 使用流式处理（边转换边播放）
    tts.text_to_speech_streaming(
        text, 
        model=args.model, 
        voice=args.voice, 
        response_format=args.format
    )
        
    print("播放完成")


if __name__ == "__main__":
    main()